package io.kiki.stack.http.feign.json.examples;

import feign.Feign;
import feign.Param;
import feign.RequestLine;
import io.kiki.stack.http.feign.json.JsonDecoder;
import org.json.JSONArray;
import org.json.JSONObject;

interface GitHub {

    @RequestLine("GET /repos/{owner}/{repo}/contributors")
    JSONArray contributors(@Param("owner") String owner, @Param("repo") String repo);
}

/**
 * adapted from {@code com.example.retrofit.GitHubClient}
 */
public class GitHubExample {

    public static void main(String... args) {
        GitHub github = Feign.builder().decoder(new JsonDecoder()).target(GitHub.class, "https://api.github.com");

        System.out.println("Let's fetch and print a list of the contributors to this library.");
        JSONArray contributors = github.contributors("netflix", "feign");
        contributors.forEach(contributor -> {
            System.out.println(((JSONObject) contributor).getString("login"));
        });
    }
}
